package de.vogella.gwt.helloserver.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DeckPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.StackPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

/** * Entry point classes define <code>onModuleLoad()</code>. */

public class HelloServer implements EntryPoint {

	private HorizontalPanel horizontalPanel = new HorizontalPanel();

	private Button btnProduktliste = new Button("Produktliste");
	private Button btnWareneingang = new Button("Wareneingang");
	private Button btnBestellungen = new Button("Bestellungen");
	private Button btnLieferanten = new Button("Lieferanten");
	private Button btnArbeitsplan = new Button("Arbeitsplan");
	private Button btnTest = new Button("Test");

	private RootPanel rootPanel = RootPanel.get();

	private ProduktGUI produktGUI = null;
	private GeschaeftspartnerGUI lieferantenGUI = null;
	private BestellungGUI bestellungGUI = null;
	private WareneingangPerformanceGUI wareneingangGUI = null;
	private ArbeitsplanGUI arbeitsplanGUI = null;
	private TestGUI testGUI = null;

	private StackPanel stackPanel = new StackPanel();
	private VerticalPanel verticalPanel = new VerticalPanel();
	private DeckPanel deckPanelLieferanten = new DeckPanel();
	private DeckPanel deckPanelProduktliste = new DeckPanel();
	private DeckPanel deckPanelWareneingang = new DeckPanel();
	private DeckPanel deckPanelBestellungen = new DeckPanel();
	private DeckPanel deckPanelArbeitsplan = new DeckPanel();
	private DeckPanel deckPanelTest = new DeckPanel();

	public void onModuleLoad() {

		rootPanel.setSize("900", "600");

		rootPanel.add(horizontalPanel);
		horizontalPanel.add(verticalPanel);
		verticalPanel.setWidth("100px");

		verticalPanel.add(stackPanel);
		deckPanelProduktliste.setAnimationEnabled(true);

		stackPanel.add(deckPanelProduktliste, "Produktliste", false);
		deckPanelProduktliste.setSize("100%", "100%");
		deckPanelProduktliste.add(btnProduktliste);
		btnProduktliste.setSize("100%", "100%");
		deckPanelProduktliste.showWidget(0);
		deckPanelLieferanten.setAnimationEnabled(true);

		stackPanel.add(deckPanelLieferanten, "Lieferanten", false);
		deckPanelLieferanten.setSize("100%", "100%");
		deckPanelLieferanten.add(btnLieferanten);
		btnLieferanten.setSize("100%", "100%");
		deckPanelLieferanten.showWidget(0);
		deckPanelBestellungen.setAnimationEnabled(true);

		stackPanel.add(deckPanelBestellungen, "Bestellungen", false);
		deckPanelBestellungen.setSize("100%", "100%");
		deckPanelBestellungen.add(btnBestellungen);
		btnBestellungen.setSize("100%", "100%");
		deckPanelBestellungen.showWidget(0);
		deckPanelWareneingang.setAnimationEnabled(true);

		stackPanel.add(deckPanelWareneingang, "Wareneingang", false);
		deckPanelWareneingang.setSize("100%", "100%");
		deckPanelWareneingang.add(btnWareneingang);
		btnWareneingang.setSize("100%", "100%");
		deckPanelWareneingang.showWidget(0);		
		
		stackPanel.add(deckPanelArbeitsplan, "Arbeitsplan", false);
		deckPanelArbeitsplan.setSize("100%", "100%");
		deckPanelArbeitsplan.add(btnArbeitsplan);
		btnArbeitsplan.setSize("100%", "100%");
		deckPanelArbeitsplan.showWidget(0);
		deckPanelArbeitsplan.setAnimationEnabled(true);
		
		stackPanel.add(deckPanelTest, "Test", false);
		deckPanelTest.setSize("100%", "100%");
		deckPanelTest.add(btnTest);
		btnTest.setSize("100%", "100%");
		deckPanelTest.showWidget(0);
		deckPanelTest.setAnimationEnabled(true);

		// btnProduktliste.setEnabled(false);
		// btnWareneingang.setEnabled(false);
		// btnBestellungen.setEnabled(false);
		// btnLieferanten.setEnabled(false);
		
		btnTest.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {

				horizontalPanel.clear();
				horizontalPanel.add(verticalPanel);
				if (testGUI != null) {

					horizontalPanel.add(arbeitsplanGUI);
				} else {

					testGUI = new TestGUI();

					horizontalPanel.add(testGUI);

				}

			}
		});
		
		btnArbeitsplan.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {

				horizontalPanel.clear();
				horizontalPanel.add(verticalPanel);
				if (arbeitsplanGUI != null) {

					horizontalPanel.add(arbeitsplanGUI);
				} else {

					arbeitsplanGUI = new ArbeitsplanGUI();

					horizontalPanel.add(arbeitsplanGUI);

				}

			}
		});

		btnProduktliste.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {

				horizontalPanel.clear();
				horizontalPanel.add(verticalPanel);
				if (produktGUI != null) {

					horizontalPanel.add(produktGUI);
				} else {

					produktGUI = new ProduktGUI();

					horizontalPanel.add(produktGUI);

				}

			}
		});

		btnLieferanten.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {

				horizontalPanel.clear();
				horizontalPanel.add(verticalPanel);

				if (lieferantenGUI != null) {
					horizontalPanel.add(lieferantenGUI);
				} else {
					lieferantenGUI = new GeschaeftspartnerGUI();
					horizontalPanel.add(lieferantenGUI);
				}
				// btnLieferanten.setText(""+horizontalPanel.getWidgetIndex(lieferantenGUI));
			}
		});

		btnBestellungen.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				// Window.alert("btnBestellung");
				horizontalPanel.clear();
				horizontalPanel.add(verticalPanel);

				if (bestellungGUI != null) {
					horizontalPanel.add(bestellungGUI);
				} else {
					bestellungGUI = new BestellungGUI();
					horizontalPanel.add(bestellungGUI);
				}
				// btnLieferanten.setText(""+horizontalPanel.getWidgetIndex(lieferantenGUI));
			}
		});

		btnWareneingang.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				// Window.alert("btnBestellung");
				horizontalPanel.clear();
				horizontalPanel.add(verticalPanel);

				if (wareneingangGUI != null) {
					horizontalPanel.add(wareneingangGUI);
				} else {
					wareneingangGUI = new WareneingangPerformanceGUI();
					horizontalPanel.add(wareneingangGUI);
				}
				// btnLieferanten.setText(""+horizontalPanel.getWidgetIndex(lieferantenGUI));
			}
		});
	}
}